package com.muyu.danmo.domain.dto;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;
import java.util.Map;

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class CanalFlatMessageDTO {
    /** 操作类型：INSERT, UPDATE, DELETE */
    private String type;

    /** 数据库名称 */
    private String database;

    /** 表名称 */
    private String table;

    /** 新数据列表（INSERT/UPDATE 时存在） */
    private List<Map<String, Object>> data;

    /** 旧数据列表（UPDATE 时存在） */
    private List<Map<String, Object>> old;

    /** 主键字段列表 */
    @JsonProperty("pkNames")
    private List<String> pkNames;

    /** MySQL 原生类型映射 */
    @JsonProperty("mysqlType")
    private Map<String, String> mysqlType;

    /** JDBC 类型码映射 */
    @JsonProperty("sqlType")
    private Map<String, Integer> sqlType;

    /** 是否为 DDL 操作 */
    private boolean isDdl;

    /** GTID，如果开启 GTID 才有值 */
    private String gtid;

    /** Canal 内部自增消息 ID */
    private long id;

    /** 事件执行时间戳（来自数据库 binlog，毫秒） */
    private long es;

    /** 消息生成时间戳（来自 Canal Server，毫秒） */
    private long ts;

    /** 原始 SQL，仅 DDL 或未过滤时存在 */
    private String sql;
}
